LAMMPS 您所在的位置:网站首页 move group是什么意思 LAMMPS

LAMMPS

2023-12-29 08:00| 来源: 网络整理| 查看: 265

文章来源:“分子动力学”公众号

链接:https://mp.weixin.qq.com/s/X47tVM6Z2mKe6maA9XTEig

region命令用于定义一个空间几何区域。

使用语法

region ID style args keyword arg … ID = 待定义区域的ID style = delete / block / cone / cylinder / plane / prism / sphere / union / intersect delete = no args block args = xlo xhi ylo yhi zlo zhi xlo,xhi,ylo,yhi,zlo,zhi = 各个维度上的范围值 cone args = dim c1 c2 radlo radhi lo hi dim = x or y or z = 圆锥台轴线方向 c1,c2 = 圆锥台轴线在另外两个维度上的坐标值 radlo,radhi = 圆锥台上下底面的半径 lo,hi = 圆锥台轴线方向的范围值 cylinder args = dim c1 c2 radius lo hi dim = x or y or z = 圆柱体轴线方向 c1,c2 = 圆柱体轴线在两位两个维度上的坐标值 radius = 圆柱体半径,可以使用变量 lo,hi = 圆柱体轴线方向的范围值 plane args = px py pz nx ny nz px,py,pz = 平面上一个点的坐标 nx,ny,nz = 平面法矢坐标 prism args = xlo xhi ylo yhi zlo zhi xy xz yz xlo,xhi,ylo,yhi,zlo,zhi = 平行六面体在各个维度上的范围值 xy = y方向在x方向的倾斜值 xz = z方向在x方向的倾斜值 yz = z方向在y方向的倾斜值 sphere args = x y z radius x,y,z = 球心坐标 radius = 球体半径,可以使用变量 union args = N reg-ID1 reg-ID2 … N = 要进行并集操作的区域的数目,必须大于等于2 reg-ID1,reg-ID2, … = 要进行并集操作的区域的ID intersect args = N reg-ID1 reg-ID2 … N = 要进行交集操作的区域的数目,必须大于等于2 reg-ID1,reg-ID2, … = 要进行交集操作的区域的ID keyword = side or units or move or rotate side value = in or out in = 指定几何体内侧作为区域 out = 指定几何体外侧作为区域 units value = lattice or box lattice = 以晶格距离作为几何距离单位 box = 以模拟盒子作为几何距离单位 move args = v_x v_y v_z v_x,v_y,v_z = x, y, z 方向的位移量,equal类型的变量 rotate args = v_theta Px Py Pz Rx Ry Rz v_theta = 旋转角,equal类型的变量,弧度单位 Px,Py,Pz = 旋转操作的中心点 Rx,Ry,Rz = 旋转轴矢量 使用举例 region 1 block -3.0 5.0 INF 10.0 INF INF region 2 sphere 0.0 0.0 0.0 5 side out region void cylinder y 2 3 5 -5.0 EDGE units box region 1 prism 0 10 0 10 0 10 2 0 0 region outside union 4 side1 side2 side3 side4 region 2 sphere 0.0 0.0 0.0 5 side out move v_left v_up NULL 使用介绍 该命令用于定义一个空间几何区域。很多其他命令都会使用该命令定义的区域。举例来说,create_atoms可以在定义区域中创建原子,create_box命令可以根据定义区域定义模拟盒子,group命令可以将定义区域中包括的原子定义为一个组,delete_atoms命令可以将定义区域中的原子删掉,fix wall/region可以将定义区域的表面定义为壁面(boundary wall)。

大多数使用region命令所定义区域的命令都需要检测某个原子的位置是否在区域内。刚好在区域边界上原子被认为是属于所定义区域的。举个例子,对于一个球形区域而言,如果在定义的时候使用了关键字side in,那么球形区域表面上的原子就是该定义区域的一部分;如果使用了关键字side out,那么球形区域表面上的原子就不属于该区域的一部分。详细可以参考下面的side关键字。

一般来说,LAMMPS所定义的区域都是静态的,也就说所定义的几何空间范围并不会随着时间而改变。但如果使用了关键字move或rotate,如下文所要介绍的,区域就会变成动态的,也就是说所定义区域的位置和朝向会随着时间发生改变。在有些时候,这种动态区域是比较有用的,比如在使用命令compute temp/region对一个区域进行恒温,或使用fix wall/region命令将包含运动粒子的区域表面定义为壁面时。

delete类型:删除指定的区域。因为定义冗余的区域并不会占用太大的开销,所以一般不需要这样做,除非在你的输入脚本中定义了大量了区域。

block / cone / cylinder / prism类型中参数lo/hi的值可以指定为EDGE或INF。

EDGE是指所定义方向一直延伸到所在方向模拟盒子的边界。需要注意的是,这里所说模拟盒子的边界是指当前盒子的边界。换句话说,如果模拟盒子在模拟的过程中发生了改变,按着这种方式定义的区域并不会随着改变。 INF是指一个非常大的负数或正数(1.0e20),所以即便模拟盒子在模拟过程中发生改变了,使用该定义仍然能将其包括到区域中。

如果模拟盒子还没有创建,那么在使用region定义区域的时候就不能使用EDGE或INF(译注:这是显然的,因为EDGE和INF都是相对于模拟盒子来说的)。

对于prism类型的区域,如果某个倾斜因子不为0,那么它所对应的两个维度上lo/hi都不能设为INF。举例来说,如果xy倾斜因子设为非零,那么xlo/xhi和ylo/yhi都不能设为INF。

注意1:Regions in LAMMPS do not get wrapped across periodic boundaries, as specified by the boundarycommand. For example, a spherical region that is defined so that it overlaps a periodic boundary is not treated as 2 half-spheres, one on either side of the simulation box.

注意2:不论是否用dimension命令将模拟设为2d或3d,LAMMPS中所定义的区域总是三维的。所以在进行2d模拟时,你需要仔细定义区域,以使其与2d的x-y平面相交,并产生正确的交集区域。

cone类型(圆锥台):定义一个轴对称的圆锥台。除了要定义两个不同的底面半径,它的定义过程基本上与圆柱cylinder是一样的。两个底面半径都可以设置为0,但不能同时设为0.

cone和cylinder类型:参数c1、c2是轴线在另外两个维度上的坐标参数。如果dim=x,那么c1/c2分别对应y/z;如果dim=y,那么c1/c2分别对应x/z;如果dim=z,那么分别对应x/y。因此,上面第三个例子定义了一个圆柱体,其轴线沿着y方向,轴线坐标为x=2.0, z=3.0,半径为5.0,轴线范围是从-5.0到模拟盒子的上边界。

plane类型:定义一个过指定点(px,py,pz),法矢为(nx,ny,nz)的平面。所指定的法矢不需要是单位矢量。平面的内部(inside)是指法矢所指的那个半空间。

prism类型:定义平行六面体式的区域。其原点坐标为(xlo,ylo,zlo),从原点出发的三个基矢为A = (xhi-xlo,0,0); B = (xy,yhi-ylo,0); C = (xz,yz,zhi-zlo)。其中xy,xz,yz叫做倾斜因子,它们可以取0.0,正值,或负值。它们实际上是正交盒子变换为平行六面体时各个面的偏斜位移值。

如果要使用create_box命令,并以已经定义为prism类型的区域为范围定义三斜式的模拟盒子,那么倾斜因子(xy,xz,yz)不能超过各个维度上对应盒子长度的一半。举个例子,如果xlo=2, xhi=12,那么模拟盒子的长度就是10,这也就要求xy倾斜因子必须在-5到5之间。类似地,倾斜因子xz和yz必须在-(xhi-xlo)/2和+(yhi-ylo)/2之间。需要注意的是,这并不是一个限制,因为如果最大的倾斜因子应该是5,那么将其设置为-15, -5, 5, 15, 25……在几何上都是等效的。

sphere和cylinder类型中参数radius可以设置为equal类型的变量variable。如果设置为变量,那么其形式就要求是v_name,其中name是变量名。这种情况下,每个时间步都会计算变量的值,并将得到的值设为半径。

equal类型的变量可以使用很多数学函数来定义公式,也可以使用thermo_style命令中关键字。

union类型:创建所有列举出区域的并集区域。

intersect类型:创建所有列举出区域的交集区域。

注意:union和intersect类型的区域依赖于产生它们的每一个子区域,因此在定义union或intersect类型的区域后,不能删除这些子区域。

side关键字:决定所考虑的区域是所指定几何体的内部还是外部。通过将该关键字与union和intersect类型配合使用,可以构建复杂的几何区域。举个例子,如果将两个球体的内部分别定义成了区域,并对这两个区域使用类型为union,side=out的操作,那么所定义的区域就是整个模拟盒子之内、除了两个球体之外的所有空间。

units关键字:决定前面所列举的所有用于定义区域的长度量的单位。若取值box,坐标的单位就与命令units说指定的距离单位相同,比如units设为real或metal时,其单位为Angstroms。若取值lattice,坐标是以晶格距离为单位的,但前提是必须已经使用lattice命令定义了晶格距离。具体到不同类型,在不同维度上是不同的,如下:

block类型:xlo/xhi是以x方向的晶格距离为单位。类似地,ylo/yhi和zlo/zhi分别是以y和z方向的晶格距离为单位。 cone类型:lo/hi是以dim所在方向的晶格距离为单位。c1/c2则分别以另外两个径向维度方向上的晶格距离为单位。圆锥台上下底面的半径是以与c1对应的那个方向上的晶格距离为单位。 cylinder类型:lo/hi是以dim所在方向的晶格距离为单位。c1/c2则分别以另外两个维度方向上的晶格距离为单位。圆柱体半径是以与c1对应的那个方向上的晶格距离为单位。 plane类型:px和nx是以x方向的晶格距离为单位。类似地,py/ny是以y方向的晶格距离为单位,pz/nz是以z方向的晶格距离为单位。 prism类型:xlo/xhi是以x方向的晶格距离为单位。类似地,ylo/yhi和zlo/zhi分别是以y和z方向的晶格距离为单位。xy和xz是以x方向的晶格距离为单位,yz是以y方向的晶格距离为单位。 sphere类型:球形坐标x,y,z分别是以x,y,z方向的晶格距离为单位,球半径是以x方向的晶格距离为单位。 如果使用move或rotate关键字,那么所定义的区域就变成了动态的,也就是说它的位置和朝向是会随着时间发生变化。这两个关键字不能用于union或intersect类型的区域。

使用限制

prism类型的区域在任何方向上都不能是0厚度。对于2d模拟而言,在z方向上可以定义一个很小的厚度,而xz和yz必须是0。

默认设置

side=in, units=lattice, 无移动或旋转。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有